//package cn.foolishbird.crow.encrypt;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.nio.charset.Charset;
//import java.nio.charset.StandardCharsets;
//import java.util.List;
//import java.util.Objects;
//import java.util.Optional;
//
///**
// * @author foolish-bird
// */
//public abstract class RSASignatureSecurityStrategy implements SecurityStrategy {
//
//    private static final Logger log = LoggerFactory.getLogger(RSASignatureSecurityStrategy.class);
//
//    /**
//     * rsaId
//     */
//    private String rsaPrivateKey = "privateKey";
//
//
//    /**
//     * 三方的rsa public key
//     */
//    private String rsaThirdPublicKey = "thirdPublicKey";
//
//    /**
//     * aes加密模式
//     */
//    private String aesModel = "AES/ECB/PKCS5Padding";
//
//    /**
//     * 字符串编码
//     */
//    private Charset charsets = StandardCharsets.UTF_8;
//
//    @Override
//    public byte[] encrypt(byte[] content, List<SecretKey> secretKeys) throws Exception {
//        return content;
//    }
//
//    @Override
//    public byte[] decrypt(byte[] secret, List<SecretKey> secretKeys) throws Exception {
//        return secret;
//    }
//
//    @Override
//    public boolean verifySignature(byte[] data, byte[] sign, List<SecretKey> secretKeys) throws Exception {
//        if (Objects.isNull(data) || data.length < 1) {
//            throw new IllegalArgumentException("内容不能为空");
//        }
//        if (Objects.isNull(sign) || sign.length < 1) {
//            throw new IllegalArgumentException("签名不能为空");
//        }
//
//        Optional<SecretKey> optional = secretKeys.stream()
//                .filter(o -> Objects.equals(o.secretId(), this.rsaThirdPublicKey)).findFirst();
//        if (!optional.isPresent()) {
//            throw new IllegalArgumentException("解密密钥不存在");
//        }
//        SecretKey thirdPublic = optional.get();
//
//        RSASignatureRequest rasBoy = doRead(data);
//        return RSAUtils.verify(rasBoy.body(), rasBoy.signature(), thirdPublic.secret(), RSAUtils.RSA_SIGNATURE_ALGORITHM);
//    }
//
//    protected abstract RSASignatureRequest doRead(byte[] content);
//
//}
